package com.njts.cricule.src.com.njts.recycle;

import java.util.Scanner;

/**
 * @author David GE
 * Date  2025/11/12
黑洞数也称为陷阱数，又称“Kaprekar问题”，是一类具有奇特转换特性的数。
任何一个各位数字不全相同的三位数，经有限次“重排求差”操作，总会得到495。最后所得的495即为三位黑洞数。所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。（6174为四位黑洞数。）
例如，对三位数207：
第1次重排求差得：720-27=693;
第2次重排求差得：963-369=594;
第3次重排求差得：954-459=495;
以后会停留在495这一黑洞数。如果三位数的3个数字全相同，一次转换后即为0。任意输入一个三位数，编程给出重排求差的过程。
输入格式：
输入在一行中给出一个三位数。
输出格式：
按照以下格式输出重排求差的过程
序号：数字重排后的最大数-重排后的最小数=差

序号从1开始，直到495出现在等号右边为止。
 如果输入的495,做一次重排,并输出
 */
public class EX4 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        int i=1;
        do {
        // 重排
        //数位拆分
        int ge = num%10;
        int shi = num/10%10;
        int bai = num/100;
        // 排序:三数排序
        int max=0;
        int mid =0;
        int min =0;
        if (ge>shi){
            if (ge>bai){
                max=ge;
                if (shi>bai){
                    mid=shi;
                    min=bai;

                }else {
                    // shi<=bai
                    mid=bai;
                    min=shi;

                }
            }else{
                // ge>shi ge<=bai
                max=bai;
                mid=ge;
                min=shi;
            }
        }
        else if (ge<=shi) {
            if (shi>bai){
                max=shi;
                if (ge<=bai){
                    mid=bai;
                    min=ge;
                }else{
                    mid=ge;
                    min=bai;
                }
            }else {
                //shi<=bai
                    max=bai;
                    mid=shi;
                    min=ge;


            }
        }
        int minNum=min*100+mid*10+max;
        int maxNum=max*100+mid*10+min;
        num=maxNum-minNum;
        System.out.println(i+"\t"+maxNum+"-"+minNum+"="+num);
        // 判断num==495?
            i++;
        }while (num!=495);
    }
}
